var a = 10;
var obj = {
    a:20,
    fn(){
        setTimeout(()=>{
            console.log(this.a)
        })
    }
}

obj.fn();

// 20

/**
 * fn函数为obj对象的一个属性，调用时，fn的调用方式决定了fn函数内部的this指向就是obj对象。
 * setTimeout虽然是异步函数，但是内部是箭头函数，箭头函数的this是在定义时就确定了的。
 * 所以打印时的this就是fn函数调用时的this即obj
 */